/**
 * Paquete que contiene los objetos.
 */
package co.sumset.objetos;

/**
 * Clase Invocacion, poder especial el cual 
 * representa el objeto que elimina al virus.
 * 
 * @author Cristian Raul Pineda Rodriguez
 */
public class Invocacion extends Actor {

	protected int vx;//Ubicacion en el eje X del escenario

	protected int vy;//Ubicacion en el eje Y del escenario
	
	/**
	 * Metodo Constructor. Inicializa los recursos para el objeto Invocacion.
	 * @param stage
	 */
	public Invocacion(Escenario stage) {
		super(stage);
		setSpriteNames( new String[] {"/juego/inv01.png","/juego/inv02.png"});
		setFrameSpeed(25);
	}

	/**
	 * Este metodo permite ejecutar acciones para una Invocacion.
	 * Se simula el movimiento de la invocacion en el escenario.
	 * Una vez la invocacion llega a el limite de su valor de
	 * movimiento tanto en eje X y en eje Y del escenario revota
	 * y sigue el su movimiento.
	 */
	public void act() {
		super.act();
		$varX+=vx;
		$varY+=vy;
		if ($varX < 0 || $varX > Escenario.WIDTH-32){
			vx = -vx;
		}

		if($varY < 0 || $varY > Escenario.HEIGHT-250){
			vy = -vy;
		}
	}
	
	/**
	 * Este metodo permite verificar las collisiones con otros Actores en el 
	 * caso de la Invocacion si los Actores son: Laser; si estos colisionan con la
	 * Invocacion esta es removida del escenario
	 * 
	 * @param a ; Recibe los actores que colisionan en el Escenario con la Invocacion.
	 */
	public void collision(Actor a) {

		if (a instanceof Laser ) {
			remove();
		}
	}

	/**
	 * @return the vx
	 */
	public int getVx() {
		return vx;
	}

	/**
	 * @param vx the vx to set
	 */
	public void setVx(int vx) {
		this.vx = vx;
	}

	/**
	 * @return the vy
	 */
	public int getVy() {
		return vy;
	}

	/**
	 * @param vy the vy to set
	 */
	public void setVy(int vy) {
		this.vy = vy;
	}
}